﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

//UP主助手插件开发SDK
//怎么开始？很简单，下面有备注~除非你看不懂中文
//请把生成的dll文件放在软件根目录下的“Addons”文件夹里面哦
//Properties/Assemblyinfo.cs是插件的信息，写过C#程序的都知道该如何写了！

namespace diange_test//<--命名空间必须与你的文件名相同，比如：test.dll的命名空间必须为test
{
    public class plugin//<--这里不能改
    {
        
        #region 这个是软件调用的部分，请勿阻塞或者使用消息框。
        /// <summary>
        /// 软件主界面打开后触发start
        /// </summary>
        public void start()
        {
            
        }

        /// <summary>
        /// 软件关闭时触发stop
        /// </summary>
        public void stop()
        {

        }

        /// <summary>
        /// 弹幕来了触发dmshow
        /// </summary>
        /// <param name="logtext">弹幕信息</param>
        /// <param name="uid">用户ID</param>
        /// <param name="nickname">用户昵称</param>
        /// <param name="datetime">接收时间(弹幕接收方式2显示为“发送时间：xxx”)</param>
        /// <param name="admin">是否房管（格式：“房管：0或1”）</param>
        /// <param name="member">是否成员</param>
        /// <param name="vip">是否VIP老爷（格式：“会员：0或1”）</param>
        /// <param name="roomid">房间ID</param>
        /// <param name="extra_info">额外信息</param>
        public void dmshow(string logtext,string uid, string nickname, string datetime, string admin, string member, string vip, string roomid, string extra_info)
        {
            //SendMSG(extra_info);
        }

        /// <summary>
        /// 主程序会分享一些行为信息给插件，方便插件开发者知道主程序在干什么
        /// P.S.新的特性都会发送记录到这里
        /// </summary>
        /// <param name="logmsg"></param>
        public void ActionLog(string logmsg)
        {

        }
        #endregion

        /// <summary>
        /// 在插件管理器双击插件会触发admin
        /// </summary>
        public void admin()
        {
            MusicName mnl = new MusicName();
            mnl.sendrqm += Mnl_sendrqm;
            mnl.sendcm += Mnl_sendcm;
            mnl.sendcml += Mnl_sendcml;
            mnl.Show();
            
        }

        private void Mnl_sendcml()
        {
            SendMSG("点歌测试.Admin@main_ChangeMusic;", true);
        }

        private void Mnl_sendcm()
        {
            SendMSG("点歌测试.Admin@main_ClearMusic;", true);
        }

        private void Mnl_sendrqm(string musicname)
        {
            SendMSG("233 " + musicname);
        }

        #region 控制外部播放器
        private void Ctr_msg(string msg)
        {

        }
        #endregion


        #region 这块就不需要动了，除非你想研究
        public event EventHandler SMSG;
        private void SendMSG(string text,bool action =false)
        {
            string _text = "{dl_title}";
            if (action)
            {
                _text = "{action}";
            }
            SMSG(new object[] { _text + text }, null);
        }
        #endregion
    }
}
